package com.bincky.listener;

import org.testng.IAnnotationTransformer;
import org.testng.IRetryAnalyzer;
import org.testng.annotations.ITestAnnotation;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

/**
 * 描述:
 *
 * @author Bincky Liang
 * @date 2021-02-21 15:39:30
 */

public class RetryListener implements IAnnotationTransformer {


    /**
     * 对所有的test注解进行判断，判断有没有设置RetryAnalyzer，如果没有则设置
     * @param annotation
     * @param testClass
     * @param testConstructor
     * @param testMethod
     */
    @Override
    public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
        //1、得到注解对象（test注解的RetryAnalyzer)
        //annotation--注解对象
        ITestAnnotation iTestAnnotation;
        IRetryAnalyzer iRetryAnalyzer = annotation.getRetryAnalyzer();
        //2、判断test注解的RetryAnalyzer有没有设置
        if (iRetryAnalyzer == null){
            //3、iRetryAnalyzer对象设置对应的属性值（对所有的test注解生效）
            annotation.setRetryAnalyzer(TestngRetry.class);
        }
    }
}
